In some games, multiple players can play asynchronously over a network. This can be accomplished, in part, through the use of ghost data. For example, a first player may perform a race in a racing game. Ghost data may be generated and stored corresponding to the user's performance. During a subsequent performance of the race by the first player or another player, a ghost expression may be generated based on the ghost data. In some games, the ghost expression may be an image or “ghost” representing the first player's initial performance of the race. As such, the first player or another player can “compete” against the first player's initial performance of the race. One drawback of the existing technology is that such gameplay is impersonal and fails to provide a sense of playing against (or with) another player.